﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using proyEspacio.baseDato;

namespace proyEspacio.logicaNegocio
{
    public static class admEstrella
    {
        /// <summary>
        /// Metodo para saber si existe una estrella en la base de datos
        /// </summary>
        /// <param name="busqueda">parametro de busqueda</param>
        /// <returns></returns>
        public static bool existeEstrella(string busqueda)
        {
            espacioEntities bd = new espacioEntities();
            return bd.Estrella.Any(g => g.Nombre == busqueda);
        }
        /// <summary>
        /// Metodo que permite ingresar una nueva estrella a la base de datos
        /// </summary>
        /// <param name="entrada">Nombre de estrella/param>
        /// <param name="idSistema">Identificador de sistema planetario</param>
        /// <returns></returns>
        public static string ingresaEstrella(string entrada, int idSistema)
        {
            var existe = existeEstrella(entrada);
            if (existe)
            {
                return "";
            }
            else
            {
                espacioEntities bd = new espacioEntities();
                Estrella ingreso = new Estrella
                {
                    Nombre = entrada,
                    Id_sistema = idSistema
                };
                bd.Estrella.Add(ingreso);
                bd.SaveChanges();
                return "Nueva estrella ingresada";
            }
        }
        /// <summary>
        /// Busca todas las estrellas pertenecientes a un sistema planetario
        /// </summary>
        /// <param name="estrellas">Lista de estrellas ya encontradas</param>
        /// <param name="idSistema">Identificador de sistema planetario</param>
        /// <returns></returns>
        public static Estrella buscaEstrellas(List<string> estrellas, int idSistema)
        {
            espacioEntities bd = new espacioEntities();
            return bd.Estrella.FirstOrDefault(e => e.Id_sistema == idSistema & !estrellas.Contains(e.Nombre));
        }
        /// <summary>
        /// Elimina una Estrella de la base de datos
        /// </summary>
        /// <param name="estrella">estrella a eliminar</param>
        /// <returns>un mensaje</returns>
        public static string eliminaEstrella(string estrella)
        {
            espacioEntities bd = new espacioEntities();
            Estrella eliminar = bd.Estrella.FirstOrDefault(e => e.Nombre == estrella);
            bd.Estrella.Remove(eliminar);
            bd.SaveChanges();
            return "Estrella eliminada";
        }
        /// <summary>
        /// Elimina un grupo de estrellas que sean del mismo sistema planetario
        /// </summary>
        /// <param name="idSistema">Identificador de sistema planetario</param>
        /// <returns>mensaje</returns>
        public static string eliminaEstrellas(int idSistema)
        {
            espacioEntities bd = new espacioEntities();
            Estrella eliminar = null;
            do
            {
                eliminar = bd.Estrella.FirstOrDefault(e => e.Id_sistema == idSistema);
                bd.Estrella.Remove(eliminar);
                bd.SaveChanges();
            } while (eliminar != null);
            return "Estrellas eliminados";
        }
        /// <summary>
        /// Permite editar el nombre de una estrella
        /// </summary>
        /// <param name="idEstrella">Identificador de estrella</param>
        /// <param name="nombre">Nombre nuevo de la estrella</param>
        /// <returns>un mensaje</returns>
        public static string editaEstrella(int idEstrella, string nombre)
        {
            espacioEntities bd = new espacioEntities();
            Estrella editar = bd.Estrella.Find(idEstrella);
            editar.Nombre = nombre;
            bd.SaveChanges();
            return "Datos actualizados";
        }
    }
}

